﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using BLL.Validation;
using Entities;
using Entities.IRepository;

namespace BLL
{
	public class QLSachBao
	{
		private readonly ISachBaoRepository _repository;
		public QLSachBao(ISachBaoRepository itr)
		{

			_repository = itr;
		}

		public ValidationResult Validate(SachBao sb)
		{
			var vResult = new ValidationResult();
			if (string.IsNullOrEmpty(sb.TenSachBao.Trim()))
				vResult.Messages.Add("Tên sách báo (Chủ đề tạp chí) phải khác chuỗi rỗng");
			if (sb.GiaBan <= 0)
				vResult.Messages.Add("Giá bán phải lớn hơn 0");
			if (sb.GiaMua <= 0)
				vResult.Messages.Add("Giá mua phải lớn hơn 0");
			if (sb.GiaBan <= sb.GiaMua)
				vResult.Messages.Add("Giá bán phải cao hơn giá mua");
			if (string.IsNullOrEmpty(sb.NhaXuatBan.Trim()))
				vResult.Messages.Add("Nhà xuất bản (Tòa soạn báo) phải khác chuỗi rỗng.");
			if (sb.NgayXuatBan > DateTime.Now)
				vResult.Messages.Add("Ngày xuất bản phải nhỏ hơn ngày hiện tại");
			return vResult;
		}

		#region Xóa
        public ActionResult DeleteSach(string maSB)
		{
			var aResult = new ActionResult();
			try
			{
				if (!_repository.XoaSach(t => t.MaSachBao == maSB))
					aResult.Exceptions.Add(new Exception("Xóa thông tin sách báo không thành công"));
			}
			catch (Exception ex)
			{
				aResult.Exceptions.Add(ex);
			}
			return aResult;
		}

		public ActionResult DeleteSach(Sach sb)
		{
			var aResult = new ActionResult();
			try
			{
				if (!_repository.XoaSach(sb))
					aResult.Exceptions.Add(new Exception("Xóa thông tin sách báo không thành công"));
			}
			catch (Exception ex)
			{
				aResult.Exceptions.Add(ex);
			}
			return aResult;
		}

		public ActionResult DeleteBao(Bao sb)
		{
			var aResult = new ActionResult();
			try
			{
				if (!_repository.XoaBao(sb))
					aResult.Exceptions.Add(new Exception("Xóa thông tin sách báo không thành công"));
			}
			catch (Exception ex)
			{
				aResult.Exceptions.Add(ex);
			}
			return aResult;
		}

        public ActionResult DeleteBao(string maSB)
		{
			var aResult = new ActionResult();
			try
			{
				if (!_repository.XoaBao(t => t.MaSachBao == maSB))
					aResult.Exceptions.Add(new Exception("Xóa thông tin sách báo không thành công"));
			}
			catch (Exception ex)
			{
				aResult.Exceptions.Add(ex);
			}
			return aResult;
		}

		public ActionResult DeleteTapChi(TapChi sb)
		{
			var aResult = new ActionResult();
			try
			{
				if (!_repository.XoaTapChi(sb))
					aResult.Exceptions.Add(new Exception("Xóa thông tin sách báo không thành công"));
			}
			catch (Exception ex)
			{
				aResult.Exceptions.Add(ex);
			}
			return aResult;
		}

        public ActionResult DeleteTapChi(string maSB)
		{
			var aResult = new ActionResult();
			try
			{
				if (!_repository.XoaTapChi(t => t.MaSachBao == maSB))
					aResult.Exceptions.Add(new Exception("Xóa thông tin sách báo không thành công"));
			}
			catch (Exception ex)
			{
				aResult.Exceptions.Add(ex);
			}
			return aResult;
		}
		#endregion
		#region Thêm
		public ActionResult ThemSach(Sach sach)
		{
			var aResult = new ActionResult();
			try
			{
				if (!_repository.ThemSach(sach))
					aResult.Exceptions.Add(new Exception("Thêm thông tin sách không thành công"));
			}
			catch (Exception ex)
			{
				aResult.Exceptions.Add(ex);
			}
			return aResult;
		}
		public ActionResult ThemBao(Bao bao)
		{
			var aResult = new ActionResult();
			try
			{
				if (!_repository.ThemBao(bao))
					aResult.Exceptions.Add(new Exception("Thêm thông tin báo không thành công"));
			}
			catch (Exception ex)
			{
				aResult.Exceptions.Add(ex);
			}
			return aResult;
		}
		public ActionResult ThemTapChi(TapChi tapchi)
		{
			var aResult = new ActionResult();
			try
			{
				if (!_repository.ThemTapChi(tapchi))
					aResult.Exceptions.Add(new Exception("Thêm thông tin tạp chí không thành công"));
			}
			catch (Exception ex)
			{
				aResult.Exceptions.Add(ex);
			}
			return aResult;
		}

		#endregion
		#region Cập nhật
		public ActionResult SuaThongTinSach(Sach sach)
		{
			var aResult = new ActionResult();
			try
			{
				if (!_repository.SuaThongTinSach(sach))
					aResult.Exceptions.Add(new Exception("Cập nhật thông tin sách không thành công"));
			}
			catch (Exception ex)
			{
				aResult.Exceptions.Add(ex);
			}
			return aResult;
		}
		public ActionResult SuaThongTinBao(Bao bao)
		{
			var aResult = new ActionResult();
			try
			{
				if (!_repository.SuaThongTinBao(bao))
					aResult.Exceptions.Add(new Exception("Cập nhật thông tin báo không thành công"));
			}
			catch (Exception ex)
			{
				aResult.Exceptions.Add(ex);
			}
			return aResult;
		}
		public ActionResult SuaThongTinTapChi(TapChi tapchi)
		{
			var aResult = new ActionResult();
			try
			{
				if (!_repository.SuaThongTinTapChi(tapchi))
					aResult.Exceptions.Add(new Exception("Cập nhật thông tin tạp chí không thành công"));
			}
			catch (Exception ex)
			{
				aResult.Exceptions.Add(ex);
			}
			return aResult;
		}
		#endregion
	}
}
